void _gdk_window_invalidate_for_expose (GdkWindow *window,
cairo_region_t *region);
-void _gdk_windowing_set_cairo_surface_size (cairo_surface_t *surface,
- int width,
- int height);
+gboolean _gdk_windowing_set_cairo_surface_size (cairo_surface_t *surface,
+ int width,
+ int height);
cairo_surface_t * _gdk_windowing_create_cairo_surface (GdkDrawable *drawable,
int width,
width = private->abs_x + private->width;
height = private->abs_y + private->height;
- _gdk_windowing_set_cairo_surface_size (private->cairo_surface,
- width, height);
- cairo_surface_set_device_offset (private->cairo_surface,
- private->abs_x,
- private->abs_y);
+ if (_gdk_windowing_set_cairo_surface_size (private->cairo_surface,
+ width, height))
+ {
+ cairo_surface_set_device_offset (private->cairo_surface,
+ private->abs_x,
+ private->abs_y);
+ }
+ else
+ {
+ cairo_surface_destroy (private->cairo_surface);
+ private->cairo_surface = NULL;
+ }
}
}
CGContextRef cg_context;
} GdkQuartzCairoSurfaceData;
-void
+gboolean
_gdk_windowing_set_cairo_surface_size (cairo_surface_t *surface,
int width,
int height)
{
/* This is not supported with quartz surfaces. */
+ return FALSE;
}
static void
return impl->cairo_surface;
}
-void
+gboolean
_gdk_windowing_set_cairo_surface_size (cairo_surface_t *surface,
gint width,
gint height)
{
// Do nothing. The surface size is determined by the DC
+ return FALSE;
}
static gint
impl->cairo_surface = NULL;
}
-void
+gboolean
_gdk_windowing_set_cairo_surface_size (cairo_surface_t *surface,
int width,
int height)
{
cairo_xlib_surface_set_size (surface, width, height);
+ return TRUE;
}
cairo_surface_t *